package com.kexio.file.dto;

import jakarta.validation.constraints.NotBlank;
import jakarta.validation.constraints.NotNull;

/**
 * 文件上传请求
 * 
 * @author kexio
 */
public class FileUploadRequest {
    
    /** 原始文件名 */
    @NotBlank(message = "文件名不能为空")
    private String originalFilename;
    
    /** 文件大小 */
    @NotNull(message = "文件大小不能为空")
    private Long fileSize;
    
    /** 文件哈希值（用于秒传） */
    private String fileHash;
    
    /** 内容类型 */
    private String contentType;
    
    /** 存储路径（可选，系统会自动生成） */
    private String storagePath;
    
    /** 业务类型 */
    private String businessType;
    
    /** 业务ID */
    private String businessId;
    
    /** 上传用户ID */
    private Long uploadUserId;
    
    /** 是否公开访问 */
    private Boolean publicAccess = false;
    
    /** 访问权限 */
    private String accessPermission;

    // ==================== Getter/Setter方法 ====================
    
    public String getOriginalFilename() { return originalFilename; }
    public void setOriginalFilename(String originalFilename) { this.originalFilename = originalFilename; }

    public Long getFileSize() { return fileSize; }
    public void setFileSize(Long fileSize) { this.fileSize = fileSize; }

    public String getFileHash() { return fileHash; }
    public void setFileHash(String fileHash) { this.fileHash = fileHash; }

    public String getContentType() { return contentType; }
    public void setContentType(String contentType) { this.contentType = contentType; }

    public String getStoragePath() { return storagePath; }
    public void setStoragePath(String storagePath) { this.storagePath = storagePath; }

    public String getBusinessType() { return businessType; }
    public void setBusinessType(String businessType) { this.businessType = businessType; }

    public String getBusinessId() { return businessId; }
    public void setBusinessId(String businessId) { this.businessId = businessId; }

    public Long getUploadUserId() { return uploadUserId; }
    public void setUploadUserId(Long uploadUserId) { this.uploadUserId = uploadUserId; }

    public Boolean getPublicAccess() { return publicAccess; }
    public void setPublicAccess(Boolean publicAccess) { this.publicAccess = publicAccess; }

    public String getAccessPermission() { return accessPermission; }
    public void setAccessPermission(String accessPermission) { this.accessPermission = accessPermission; }
}
